package times

import "time"

// RoundUpToNearestInterval 将时间向上舍入到最近的间隔时间点
// 参数:
//   t: 需要舍入的时间
//   interval: 时间间隔
// 返回值:
//   舍入后的时间
func RoundUpToNearestInterval(t time.Time, interval time.Duration) time.Time {
	// 先向下截断到最近的间隔时间点
	truncated := t.Truncate(interval)
	// 如果原时间正好等于截断后的时间，说明已经在间隔点上，直接返回
	if t.Equal(truncated) {
		return t
	}
	// 否则向上舍入到下一个间隔时间点
	return truncated.Add(interval)
}

// RoundDownToNearestInterval 将时间向下舍入到最近的间隔时间点
// 参数:
//   t: 需要舍入的时间
//   interval: 时间间隔
// 返回值:
//   舍入后的时间
func RoundDownToNearestInterval(t time.Time, interval time.Duration) time.Time {
	// 直接使用Truncate方法向下舍入到最近的间隔时间点
	return t.Truncate(interval)
}